package com.yunxin.core.application.command.product;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * @author zero°
 * @since 2023-05-31
 */
@Data
@Schema(description = "产品定价配置对象")
public class ProductUnitPriceConfigOperateCommand implements Serializable {

    /**
     * 产品id
     */
    @Schema(description = "产品id")
    @NotNull(message = "产品id不能为空")
    private Long productId;
    /**
     * 生效时间
     */
    @Schema(description = "生效时间")
    @NotBlank(message = "生效时间不能为空")
    private String takeEffectTime;
    /**
     * 计费类型 1.cpa
     */
    @Schema(description = "计费类型 1.cpa")
    @NotNull(message = "计费类型不能为空")
    private Integer chargedType;
    /**
     * 计费单价
     */
    @Schema(description = "计费单价")
    @NotNull(message = "计费单价不能为空")
    private BigDecimal chargedPrice;
    /**
     * 计费方式 1.uv 2.注册 3.表单
     */
    @Schema(description = "计费方式 1.uv 2.注册 3.表单")
    @NotNull(message = "计费方式不能为空")
    private Integer chargedWay;
    /**
     * 税率
     */
    @Schema(description = "税率")
    private BigDecimal taxRate;
    /**
     * 结算周期类型 1.预付 2.日结 3.周结 4.月结
     */
    @Schema(description = "结算周期类型 1.预付 2.日结 3.周结 4.月结")
    @NotNull(message = "结算周期类型不能为空")
    private Integer settlementCycleType;
    /**
     * 操作人
     */
    @Schema(hidden = true)
    private String operator;


}
